home *** CD-ROM | disk | FTP | other *** search
- ID:BU Bus-Mastering Devices and QEMM-386
- Quarterdeck Technical Note #121
- by Stan Young
- last revision: 24 February 1992
-
- BUS-MASTERING DEVICES, QEMM-386 AND VIRTUAL DMA SERVICES
-
- Q: What is a bus-mastering device and what problems might be seen when using
- one?
-
- Bus-mastering devices are ones which do their own direct memory
- addressing (DMA). DMA is done without going through the machine's processor.
- The most common bus-mastering devices we see currently are SCSI hard disk
- controllers, but, technically, other types of devices could be bus-mastering
- as well. We have seen bus-mastering ESDI disk controllers and an increasing
- number of bus-mastering network cards as well. The problem seen with bus-
- mastering devices is that while they are high-performance devices and quite
- often found on 386 and 486 machines, they are unfortunately, in their design,
- incompatible with one of the operating modes of the 80386 and i486 processors -
- - the Virtual 86 mode.
- Specifically, the problem is that the device puts data into absolute
- memory addresses and assumes that the contents of those memory addresses will
- always remain constant. However, on a 386 machine with the processor in
- Virtual 86 mode, this can often be an incorrect assumption. In Virtual 86
- mode, the same physical memory addresses can, at any given moment hold
- different data, depending on which virtual machine is current.
- If you are using a bus-mastering device on a 386 or 486 that is in
- Virtual 86 mode and actual memory paging is occurring (the switching from one
- virtual machine to another), your machine will probably hang when you use the
- bus-mastering device.
-
- A "real world" example:
-
- Quarterdeck first became aware of the problem from customers who had
- bus-mastering SCSI hard disk controllers. They reported that they could
- boot their machines, start our multitasking DESQview software and as long
- as they ran only one application, their system ran fine. As soon as they
- opened a second application, the system would hang. The problem was also
- seen by users who were not using DESQview, but who were using the LOADHI
- feature of QEMM-386.
- In this case, the hang occurred because the disk controller would
- prepare to load some absolute memory addresses with data pertaining to an
- application that was running, but by the time the data was actually
- transferred to these addresses, QEMM-386 had switched the memory map.
- Those absolute memory addresses no longer belonged to the application
- which could process the data. They belonged instead to some other
- application or process. In theory, this could have caused data
- corruption, but in reality it never did. The memory corruption was
- typically so extensive that the systems simply hung as soon as a change
- in the memory map occurred.
-
- Q: How can the problem with running Bus-mastering devices in Virtual 86 mode
- be corrected?
-
- A: There are four possible solutions:
-
- 1) QEMM 5.00 (and later versions) has a DB=xx (DISKBUF=xx) parameter
- which should prevent QEMM-SCSI problems at the expense of a little
- conventional memory. xx is the number of K used for buffering. Any
- value for xx is sufficient to correct the problem. DISKBUF=2 would be
- fine for most cases. Higher numbers, say up to 10 may improve
- performance. Setting DISKBUF to more than 10 is probably a waste of
- memory.
- This approach will not work in cases where the bus-mastering device
- is something other than a hard disk. If your bus-mastering device is
- something other than a hard disk the solutions below, especially #4, are
- your only options.
-
- 2) Similarly, the drivers of many bus-mastering hard disks have buffering
- options. Check the documentation for your disk controller to see if the
- driver has a parameter to set up buffering for disk operations. Some
- drivers will also document parameters that are specific to 386
- operations. For example, the early Adaptec drivers SCSIHA.SYS and
- AHA1540.SYS included both 386 and disk buffering options invoked by the
- parameters "/v386" and "/b:64." "/v386" stands for virtual 386; "/b:64"
- allocates a 64k buffer, for DMA.
-
- 3) Check the documentation for your bus-mastering device and see if it
- can be configured to use the BIOS or any one of the standard DMA
- channels. QEMM can correct the problem if the BIOS or standard DMA
- channels are used.
-
- 4) THE BEST SOLUTION: Contact the maker of your bus-mastering device and
- see if they have a driver available which supports the VDS (Virtual DMA
- Services) specification. VDS is now an industry-wide specification
- supported by IBM, Microsoft and Quarterdeck, as well as many other
- hardware and software suppliers.
- A VDS driver allows a bus-mastering device to find the real physical
- address of its data when the processor is in Virtual 86 mode.
-
- QEMM 5.00 (and later versions) supports the VDS specification. A VDS
- driver provides the best solution to this problem in terms of reliability,
- speed and memory efficiency.
-
- Q: I know I have a bus-mastering device on my computer, but I haven't seen
- any problem. Why not?
-
- A: It's possible that your bus-mastering device uses a standard DMA channel
- for DMA operations. QEMM-386 can correct the problem when standard DMA
- channels are used.
-
- It is quite possible that your bus-mastering device was shipped with a
- VDS driver. Bus-mastering hard disk controllers are starting to ship with
- drivers that make VDS calls, and these drivers do not require the DB parameter
- or any other buffering. We expect that most bus-mastering devices will
- eventually include VDS drivers and therefore will not exhibit any problems
- when run in Virtual 86 mode.
-
- WINDOWS 3, QEMM-386, AND BUS-MASTERING DISK CONTROLLERS
-
- The problem mentioned here is also a problem for Microsoft's "Windows"
- version 3. Microsoft's solution is in SMARTDRV.SYS. Smartdrive does the same
- "double-buffering" for disk I/O that QEMM-386's DISKBUF parameter does. Since
- QEMM-386 is disabled when you enter Enhanced mode, this is a good thing. If
- you have a bus-mastering disk controller and wish to run Microsoft's "Windows"
- program in Enhanced mode while loading any programs high, you must load
- SMARTDRV.SYS and load it LOW. In addition, the switch "/B-" disables this
- service of SMARTDRV.SYS, so it cannot be used.
-
- ************************************************************************
- *This technical note may be copied and distributed freely as long as it*
- *is distributed in its entirety and it is not distributed for profit. *
- * Copyright (C) 1990-2 by Quarterdeck Office Systems *
- ************************ E N D O F F I L E *************************